package com.sgcc.statistics.service;

import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.sgcc.statistics.domain.IndicatorExecutionDto;
import com.sgcc.statistics.domain.OIndexBreakdown;

/**
 * OIndexBreakdownService接口
 * 
 * @author sgcc
 * @date 2021-04-14
 */
public interface IOIndexBreakdownService 
{
    /**
     * 查询OIndexBreakdown
     * 
     * @param id OIndexBreakdownID
     * @return OIndexBreakdown
     */
    public OIndexBreakdown selectOIndexBreakdownById(String id);

    /**
     * 查询OIndexBreakdown列表
     * 
     * @param oIndexBreakdown OIndexBreakdown
     * @return OIndexBreakdown集合
     */
    public List<OIndexBreakdown> selectOIndexBreakdownList(OIndexBreakdown oIndexBreakdown) throws IOException, Exception;

    /**
     * 新增OIndexBreakdown
     * 
     * @param OIndexBreakdownList
     * @return 结果
     */
    public int insertOIndexBreakdown(List<OIndexBreakdown> OIndexBreakdownList) throws Exception;

    /**
     * 修改OIndexBreakdown
     * 
     * @param OIndexBreakdownList
     * @return 结果
     */
    public int updateOIndexBreakdown(List<OIndexBreakdown> OIndexBreakdownList) throws JsonProcessingException, Exception;

    /**
     * 批量删除OIndexBreakdown
     * 
     * @param ids 需要删除的OIndexBreakdownID
     * @return 结果
     */
    public int deleteOIndexBreakdownByIds(String[] ids);

    /**
     * 删除OIndexBreakdown信息
     * 
     * @param id OIndexBreakdownID
     * @return 结果
     */
    public int deleteOIndexBreakdownById(String id);

    List<OIndexBreakdown> provinceIndexBrekdown(OIndexBreakdown oIndexBreakdown) throws Exception;

    List<OIndexBreakdown> cityIndexBrekdown(OIndexBreakdown oIndexBreakdown) throws Exception;

    List<OIndexBreakdown> getIndexBrekdownByUnit(OIndexBreakdown oIndexBreakdown) throws Exception;

    List<IndicatorExecutionDto> implementationIndicators(String orgNo, String year) throws Exception;

    List<IndicatorExecutionDto> addNumPercentage(String orgNo, String year) throws Exception;

    OIndexBreakdown getIndexBrekdownByUnit(String year, String unit);

    List<OIndexBreakdown> getIndexDetailList(String orgNo, String type, String startTime, String endTime) throws Exception;

    List<OIndexBreakdown> getShengBreakdownCityData(String year);

    List<OIndexBreakdown> districtBreakDown(List<OIndexBreakdown> oIndexBreakdownList) throws Exception;

    List<OIndexBreakdown> getCityBreakDownData(String year, String period);

    void countLastMonthIndexCompletion() throws IOException;

    String isDoBreakDown(String year);
}
